package com.xunshibao.core.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;

public interface GenericDao {
    /**
     * 保存对象
     * 
     * @param obj
     * @return 保存的实体对象entity
     */
    boolean save(Object entity);

    /**
     * 更新对象
     * 
     * @param object
     * @return 更新的实体对象entity
     */
    boolean update(Object entity);

    /**
     * 更新对象
     * 
     * @param object
     * @return 更新的实体对象entity
     */
    Object saveOrUpdate(Object entity);

    void delete(Object entity);

    @SuppressWarnings("rawtypes")
	public List findByCriteria(DetachedCriteria criteria);

    @SuppressWarnings("rawtypes")
    public List findByCriteria(final DetachedCriteria criteria, final int firstResult, final int maxResults);

    /**
     * 设置HibernateTemplate模板
     * 
     * @param hibernateTemplate
     *            Hibernate数据库操作模板
     */
    void setHibernateTemplate(HibernateTemplate hibernateTemplate);

    /**
     * 返回Hibernate数据库操作模板
     * 
     * @return Hibernate数据库操作模板 HibernateTemplate
     */
    public HibernateTemplate getHibernateTemplate();
}
